// 首字母大写
export function capitalize(str) {
  return str.charAt(0).toUpperCase() + str.slice(1);
}

/**
 * 将驼峰字符串转为分隔符形式（默认用 _ 连接）
 * @param {string} str - 要转换的驼峰字符串
 * @param {string} separator - 分隔符，默认是 "_"
 */
export function convertBySeparator(str, separator = '_') {
  if (!str) return '';

  return str
    .replace(/([A-Z])/g, `${separator}$1`)
    .toLowerCase()
    .replace(new RegExp(`^\\${separator}`), ''); // 去掉开头的分隔符
}

/**
 * 将分隔字符串转为大驼峰（首字母大写）
 * @param {string} str - 原始字符串
 * @param {string|RegExp} separator - 分隔符，默认支持空格、下划线、短横线
 */
export function convertUpperCamel(str, separator = /[\s_\-]+/) {
  if (!str) return '';

  return str
    .trim()
    .split(separator)
    .filter(Boolean)
    .map(part => part.charAt(0).toUpperCase() + part.slice(1))
    .join('');
}

/**
 * 将分隔字符串转为小驼峰（首字母小写）
 * @param {string} str - 原始字符串
 * @param {string|RegExp} separator - 分隔符，默认支持空格、下划线、短横线
 */
export function convertLowerCamel(str, separator = /[\s_\-]+/) {
  if (!str) return '';

  var parts = str.trim().split(separator).filter(Boolean);
  return parts[0].toLowerCase() + parts
    .slice(1)
    .map(part => part.charAt(0).toUpperCase() + part.slice(1))
    .join('');
}
